package com.yihr.dao.account;

import com.yihr.bean.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserDao {

    // 获取用户信息
    User getById(@Param("id") Long id);


    List<User> find(@Param("filter")Map<String, Object> filter);

    long countUser(@Param("filter")Map<String, Object> filter);

    List<User> getUserFP(@Param("filter")Map<String, Object> filter,
                           @Param("idmin") long idmin, @Param("limit") long limit);

    // 获取id 大于 idmin的第 offset 个ID，
    Long getUserId(@Param("filter")Map<String, Object> filter,
                   @Param("idmin") long idmin, @Param("offset") int offset);

    // 添加用户
//    int insertEntity(@Param("entity") Map<String, Object> entity);

    // 插入user并自动更新userid，成功返回1
    int insertUser(User user);

    // 登陆验证时，通过用户名、邮箱、电话获取密码信息
    Map<String, Object> loginInfoFromUsername(@Param("username") String username);

    Map<String, Object> loginInfoFromEmail(@Param("email") String email);

    Map<String, Object> loginInfoFromPhone(@Param("phone") String phone);

    // 注册时检测用户名、邮箱是否已注册
    long checkUsernameAndEmail(@Param("username") String username, @Param("email") String email);

    // 删除用户
    int delete(@Param("id") Long id);

    List<String> getRoles(@Param("id") Long id);

    // 更新密码、状态
    int updatePassword(@Param("id") Long id, @Param("password") String password);

    int updateState(@Param("id") Long id, @Param("state") int state);


}
